#define READ_MODE  "r"	/* Read file open mode */
#define WRITE_MODE "w"	/* Write file open mode */
#define APPEND_MODE "a"	/* Append to file mode */
#define MAX_PATH_LENGTH 256 /* Maximum path in windows is 256 characters */

/*********************************************************************************************************************** */
/* Description: Clear the entry file
/*********************************************************************************************************************** */
void clearEntryFile();
/*********************************************************************************************************************** */
/* Description: Clear the external file
/*********************************************************************************************************************** */
void clearExternalFile();
/*********************************************************************************************************************** */
/* Description: Clear the obj file
/*********************************************************************************************************************** */
void clearObjFile();
/*********************************************************************************************************************** */
/* Description: Print a line in the entry file
/* Input: label - label that entry uses - it should be printed 
/* Input: counter - line number of the label
/*********************************************************************************************************************** */
void printEntry(char* label, int counter);
/*********************************************************************************************************************** */
/* Description: Print a line in the external file
/* Input: label - label of the extern aluses - it should be printed 
/* Input: counter - line number of the command that uses this external label
/*********************************************************************************************************************** */
void printExternal(char* label, int counter);
/*********************************************************************************************************************** */
/* Description: Print a line in the obj file
/* Input: address - address of the line
/* Input: data - numeric data that represents the current line
/* Input: are - Absolute / Rellocatable / External
/*********************************************************************************************************************** */
void printObj(int address, int data, char are);
/*********************************************************************************************************************** */
/* Description: Print the header of the obj file
/* Input: ic - tottal of code lines
/* Input: dc - total of data lines
/*********************************************************************************************************************** */
void printObjHeader(int ic, int dc);

extern char origFilePath[MAX_PATH_LENGTH];			/* File path */
extern BOOL isEntryFileOpened;						/* Is the entry file was opened */
extern BOOL isExternFileOpened;						/* Is the external file was opened */
extern BOOL isObjFileOpened;						/* Is the obj file was opened */

